package jay.home.bet.domain.logic;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import jay.home.bet.dao.AccountDao;
import jay.home.bet.dao.CounterDao;
import jay.home.bet.dao.OddsDao;
import jay.home.bet.dao.OrderDao;
import jay.home.bet.domain.Comp;
import jay.home.bet.domain.Event;
import jay.home.bet.domain.Item;
import jay.home.bet.domain.Order;
import jay.home.bet.domain.User;
import jay.home.bet.misc.Util;

class OrderServiceImpl implements OrderService
{

	private OrderDao orderDao;
	private OddsDao oddsDao;
	private CounterDao counterDao;
	private AccountDao accountDao;

	public Order getOrder(String id)
	{
		return orderDao.getOrder(id);
	}

	public List<Order> getOrders(int page, int range)
	{
		return orderDao.getOrders(page, range);
	}

	public List<Order> getOrdersByUser(String username, int page, int range)
	{
		return (List<Order>) orderDao.getOrdersByUser(username, page, range);
	}

	public List<Order> getOrdersByComp(String compid, int page, int range)
	{
		return (List<Order>) orderDao.getOrdersByComp(compid, page, range);
	}

	public void insertOrder(Order order, User user)
	{
		orderDao.insertOrder(order);
		user.setBalance(user.getBalance() - order.getAmount());
		accountDao.updateUser(user);//更新用户余额
		for(Item item : order.getItems())
			counterDao.count(item.getEventid(), item.getCounter(), order.getAmount());
	}

	public void updateOrder(Order order)
	{
		orderDao.updateOrder(order);
	} 
	
	public Item generateOrderItem(Order order, String eventid, String oddType, boolean guoguan, boolean gunqiu)
	{
		Event event = oddsDao.getEvent(eventid);
		if(event == null)return null;
		Item item = new Item();
		item.setId(Util.uuid());
		item.setEventid(eventid);
		item.setOrderid(order.getId());
		
		if(gunqiu)
		{
			item.setCurrentScore(event.getComp().getNowResult());//滚球要设置即时比分;
			if("dx_home".equals(oddType))
			{
				order.setCat("大小");
				item.setCat("大小");
				item.setBeton("大");
				item.setOdd(event.getDaxiao().getHome());
				item.setPankou(event.getDaxiao().getPankou());
				item.setHalf(false);
				item.setCounter("dx_home");
			}
			else if("dx_road".equals(oddType))
			{
				order.setCat("大小");
				item.setCat("大小");
				item.setBeton("小");
				item.setOdd(event.getDaxiao().getHome());
				item.setPankou(event.getDaxiao().getPankou());
				item.setHalf(false);
			}
			else if("dx_half_home".equals(oddType))
			{
				order.setCat("大小");
				item.setCat("大小");
				item.setBeton("大");
				item.setOdd(event.getDaxiaoHalf().getRoad());
				item.setPankou(event.getDaxiaoHalf().getPankou());
				item.setHalf(true);
			}
			else if("dx_half_road".equals(oddType))
			{
				order.setCat("大小");
				item.setCat("大小");
				item.setBeton("小");
				item.setOdd(event.getDaxiaoHalf().getRoad());
				item.setPankou(event.getDaxiaoHalf().getPankou());
				item.setHalf(true);
			}
			else if("rq_home".equals(oddType))
			{
				order.setCat("让球");
				item.setCat("让球");
				item.setBeton("主");
				item.setOdd(event.getRangqiu().getHome());
				item.setPankou(event.getRangqiu().getPankou());
				item.setAttach(event.getRangqiu().getWho2who());
				item.setHalf(false);
			}
			else if("rq_road".equals(oddType))
			{
				order.setCat("让球");
				item.setCat("让球");
				item.setBeton("客");
				item.setOdd(event.getRangqiu().getRoad());
				item.setPankou(event.getRangqiu().getPankou());
				item.setAttach(event.getRangqiu().getWho2who());
				item.setHalf(false);
			}
			else if("rq_half_home".equals(oddType))
			{
				order.setCat("让球");
				item.setCat("让球");
				item.setBeton("主");
				item.setOdd(event.getRangqiuHalf().getHome());
				item.setPankou(event.getRangqiuHalf().getPankou());
				item.setAttach(event.getRangqiuHalf().getWho2who());
				item.setHalf(true);
			}
			else if("rq_half_road".equals(oddType))
			{
				order.setCat("让球");
				item.setCat("让球");
				item.setBeton("客");
				item.setOdd(event.getRangqiuHalf().getRoad());
				item.setPankou(event.getRangqiuHalf().getPankou());
				item.setAttach(event.getRangqiuHalf().getWho2who());
				item.setHalf(true);
			}
			else return null;
		}
		if(guoguan)
		{
			String shuiwei = counterDao.getConfig("bet.gunqiu.shuiwei");
			Double sw = Util.toDouble(shuiwei);
			if("dx_home".equals(oddType))
			{
				order.setCat("大小");
				item.setCat("大小");
				item.setBeton("大");
				item.setOdd(event.getDaxiao().getHome() - sw);
				item.setPankou(event.getDaxiao().getPankou());
				item.setHalf(false);
			}
			else if("dx_road".equals(oddType))
			{
				order.setCat("大小");
				item.setCat("大小");
				item.setBeton("小");
				item.setOdd(event.getDaxiao().getHome()-sw);
				item.setPankou(event.getDaxiao().getPankou());
				item.setHalf(false);
			}
			else if("dx_half_home".equals(oddType))
			{
				order.setCat("大小");
				item.setCat("大小");
				item.setBeton("大");
				item.setOdd(event.getDaxiaoHalf().getRoad()-sw);
				item.setPankou(event.getDaxiaoHalf().getPankou());
				item.setHalf(true);
			}
			else if("dx_half_road".equals(oddType))
			{
				order.setCat("大小");
				item.setCat("大小");
				item.setBeton("小");
				item.setOdd(event.getDaxiaoHalf().getRoad()-sw);
				item.setPankou(event.getDaxiaoHalf().getPankou());
				item.setHalf(true);
			}
			else if("rq_home".equals(oddType))
			{
				order.setCat("让球");
				item.setCat("让球");
				item.setBeton("主");
				item.setOdd(event.getRangqiu().getHome()-sw);
				item.setPankou(event.getRangqiu().getPankou());
				item.setAttach(event.getRangqiu().getWho2who());
				item.setHalf(false);
			}
			else if("rq_road".equals(oddType))
			{
				order.setCat("让球");
				item.setCat("让球");
				item.setBeton("客");
				item.setOdd(event.getRangqiu().getRoad()-sw);
				item.setPankou(event.getRangqiu().getPankou());
				item.setAttach(event.getRangqiu().getWho2who());
				item.setHalf(false);
			}
			else if("rq_half_home".equals(oddType))
			{
				order.setCat("让球");
				item.setCat("让球");
				item.setBeton("主");
				item.setOdd(event.getRangqiuHalf().getHome()-sw);
				item.setPankou(event.getRangqiuHalf().getPankou());
				item.setAttach(event.getRangqiuHalf().getWho2who());
				item.setHalf(true);
			}
			else if("rq_half_road".equals(oddType))
			{
				order.setCat("让球");
				item.setCat("让球");
				item.setBeton("客");
				item.setOdd(event.getRangqiuHalf().getRoad()-sw);
				item.setPankou(event.getRangqiuHalf().getPankou());
				item.setAttach(event.getRangqiuHalf().getWho2who());
				item.setHalf(true);
			}
			else if("ds_odd".equals(oddType))
			{
				order.setCat("单双");
				item.setCat("单双");
				item.setBeton("单");
				item.setOdd(event.getDanshuang().getOdd());
				item.setHalf(false);
			}
			else if("ds_even".equals(oddType))
			{
				order.setCat("单双");
				item.setCat("单双");
				item.setBeton("双");
				item.setOdd(event.getDanshuang().getEven());
				item.setHalf(false);
			}
			//独赢
			else if("dy_win".equals(oddType))
			{
				order.setCat("独赢");
				item.setCat("独赢");
				item.setBeton("主");
				item.setOdd(event.getDuying().getWin());
				item.setHalf(false);
			}
			else if("dy_lose".equals(oddType))
			{
				order.setCat("独赢");
				item.setCat("独赢");
				item.setBeton("客");
				item.setOdd(event.getDuying().getLose());
				item.setHalf(false);
			}
			else if("dy_draw".equals(oddType))
			{
				order.setCat("独赢");
				item.setCat("独赢");
				item.setBeton("和");
				item.setOdd(event.getDuying().getDraw());
				item.setHalf(false);
			}
			else if("dy_half_win".equals(oddType))
			{
				order.setCat("独赢");
				item.setCat("独赢");
				item.setBeton("主");
				item.setOdd(event.getDuyingHalf().getWin());
				item.setHalf(true);
			}
			else if("dy_half_lose".equals(oddType))
			{
				order.setCat("独赢");
				item.setCat("独赢");
				item.setBeton("客");
				item.setOdd(event.getDuyingHalf().getLose());
				item.setHalf(true);
			}
			else if("dy_half_draw".equals(oddType))
			{
				order.setCat("独赢");
				item.setCat("独赢");
				item.setBeton("和");
				item.setOdd(event.getDuyingHalf().getDraw());
				item.setHalf(true);
			}
			//半全场
			else if("bqc_hh".equals(oddType))
			{
				order.setCat("半全场");
				item.setCat("半全场");
				item.setBeton("主/主");
				item.setOdd(event.getBanquanchang().getHh());
			}
			else if("bqc_hr".equals(oddType))
			{
				order.setCat("半全场");
				item.setCat("半全场");
				item.setBeton("主/客");
				item.setOdd(event.getBanquanchang().getHr());
			}
			else if("bqc_hd".equals(oddType))
			{
				order.setCat("半全场");
				item.setCat("半全场");
				item.setBeton("主/和");
				item.setOdd(event.getBanquanchang().getHd());
			}
			else if("bqc_rh".equals(oddType))
			{
				order.setCat("半全场");
				item.setCat("半全场");
				item.setBeton("客/主");
				item.setOdd(event.getBanquanchang().getRh());
			}
			else if("bqc_rr".equals(oddType))
			{
				order.setCat("半全场");
				item.setCat("半全场");
				item.setBeton("客/客");
				item.setOdd(event.getBanquanchang().getRr());
			}
			else if("bqc_rd".equals(oddType))
			{
				order.setCat("半全场");
				item.setCat("半全场");
				item.setBeton("客/和");
				item.setOdd(event.getBanquanchang().getRd());
			}
			else if("bqc_dh".equals(oddType))
			{
				order.setCat("半全场");
				item.setCat("半全场");
				item.setBeton("和/主");
				item.setOdd(event.getBanquanchang().getDh());
			}
			else if("bqc_dr".equals(oddType))
			{
				order.setCat("半全场");
				item.setCat("半全场");
				item.setBeton("和/客");
				item.setOdd(event.getBanquanchang().getDr());
			}
			else if("bqc_dd".equals(oddType))
			{
				order.setCat("半全场");
				item.setCat("半全场");
				item.setBeton("和/和");
				item.setOdd(event.getBanquanchang().getDd());
			}
			//入球数
			else if("rqs_01".equals(oddType))
			{
				order.setCat("入球数");
				item.setCat("入球数");
				item.setBeton("01");
				item.setOdd(event.getRuqiushu().getS01());
			}
			
			else if ("rqs_23".equals(oddType))
			{
				order.setCat("入球数");
				item.setCat("入球数");
				item.setBeton("23");
				item.setOdd(event.getRuqiushu().getS23());
			}

			else if("rqs_46".equals(oddType))
			{
				order.setCat("入球数");
				item.setCat("入球数");
				item.setBeton("46");
				item.setOdd(event.getRuqiushu().getS46());
			}

			else if("rqs_7".equals(oddType))
			{
				order.setCat("入球数");
				item.setCat("入球数");
				item.setBeton("7");
				item.setOdd(event.getRuqiushu().getSup7());
			}

			else if("bd_00".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("0:0");
				item.setOdd(event.getBodan().getS00());
			}

			else if("bd_01".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("0:1");
				item.setOdd(event.getBodan().getS01());
			}

			else if("bd_02".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("0:2");
				item.setOdd(event.getBodan().getS02());
			}

			else if("bd_03".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("0:3");
				item.setOdd(event.getBodan().getS03());
			}

			else if("bd_04".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("0:4");
				item.setOdd(event.getBodan().getS04());
			}

			else if("bd_10".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("1:0");
				item.setOdd(event.getBodan().getS10());
			}

			else if("bd_11".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("1:1");
				item.setOdd(event.getBodan().getS11());
			}

			else if("bd_12".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("1:2");
				item.setOdd(event.getBodan().getS12());
			}

			else if("bd_13".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("1:3");
				item.setOdd(event.getBodan().getS13());
			}

			else if("bd_14".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("1:4");
				item.setOdd(event.getBodan().getS14());
			}

			else if("bd_20".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("2:0");
				item.setOdd(event.getBodan().getS20());
			}

			else if("bd_21".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("2:1");
				item.setOdd(event.getBodan().getS21());
			}

			else if("bd_22".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("2:2");
				item.setOdd(event.getBodan().getS22());
			}

			else if("bd_23".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("2:3");
				item.setOdd(event.getBodan().getS23());
			}

			else if("bd_24".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("2:4");
				item.setOdd(event.getBodan().getS24());
			}

			else if("bd_30".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("3:0");
				item.setOdd(event.getBodan().getS30());
			}

			else if("bd_31".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("3:1");
				item.setOdd(event.getBodan().getS31());
			}

			else if("bd_32".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("3:2");
				item.setOdd(event.getBodan().getS32());
			}

			else if("bd_33".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("3:3");
				item.setOdd(event.getBodan().getS33());
			}

			else if("bd_34".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("3:4");
				item.setOdd(event.getBodan().getS34());
			}

			else if("bd_40".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("4:0");
				item.setOdd(event.getBodan().getS40());
			}

			else if("bd_41".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("4:1");
				item.setOdd(event.getBodan().getS41());
			}

			else if("bd_42".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("4:2");
				item.setOdd(event.getBodan().getS42());
			}

			else if("bd_43".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("4:3");
				item.setOdd(event.getBodan().getS43());
			}

			else if("bd_44".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("4:4");
				item.setOdd(event.getBodan().getS44());
			}

			else if("bd_xx".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("x:x");
				item.setOdd(event.getBodan().getSxx());
			}
			else return null;
		}
		else
		{
			if("dx_home".equals(oddType))
			{
				order.setCat("大小");
				item.setCat("大小");
				item.setBeton("大");
				item.setOdd(event.getDaxiao().getHome());
				item.setPankou(event.getDaxiao().getPankou());
				item.setHalf(false);
			}
			else if("dx_road".equals(oddType))
			{
				order.setCat("大小");
				item.setCat("大小");
				item.setBeton("小");
				item.setOdd(event.getDaxiao().getHome());
				item.setPankou(event.getDaxiao().getPankou());
				item.setHalf(false);
			}
			else if("dx_half_home".equals(oddType))
			{
				order.setCat("大小");
				item.setCat("大小");
				item.setBeton("大");
				item.setOdd(event.getDaxiaoHalf().getRoad());
				item.setPankou(event.getDaxiaoHalf().getPankou());
				item.setHalf(true);
			}
			else if("dx_half_road".equals(oddType))
			{
				order.setCat("大小");
				item.setCat("大小");
				item.setBeton("小");
				item.setOdd(event.getDaxiaoHalf().getRoad());
				item.setPankou(event.getDaxiaoHalf().getPankou());
				item.setHalf(true);
			}
			else if("rq_home".equals(oddType))
			{
				order.setCat("让球");
				item.setCat("让球");
				item.setBeton("主");
				item.setOdd(event.getRangqiu().getHome());
				item.setPankou(event.getRangqiu().getPankou());
				item.setAttach(event.getRangqiu().getWho2who());
				item.setHalf(false);
			}
			else if("rq_road".equals(oddType))
			{
				order.setCat("让球");
				item.setCat("让球");
				item.setBeton("客");
				item.setOdd(event.getRangqiu().getRoad());
				item.setPankou(event.getRangqiu().getPankou());
				item.setAttach(event.getRangqiu().getWho2who());
				item.setHalf(false);
			}
			else if("rq_half_home".equals(oddType))
			{
				order.setCat("让球");
				item.setCat("让球");
				item.setBeton("主");
				item.setOdd(event.getRangqiuHalf().getHome());
				item.setPankou(event.getRangqiuHalf().getPankou());
				item.setAttach(event.getRangqiuHalf().getWho2who());
				item.setHalf(true);
			}
			else if("rq_half_road".equals(oddType))
			{
				order.setCat("让球");
				item.setCat("让球");
				item.setBeton("客");
				item.setOdd(event.getRangqiuHalf().getRoad());
				item.setPankou(event.getRangqiuHalf().getPankou());
				item.setAttach(event.getRangqiuHalf().getWho2who());
				item.setHalf(true);
			}
//			单双
			else if("ds_odd".equals(oddType))
			{
				order.setCat("单双");
				item.setCat("单双");
				item.setBeton("单");
				item.setOdd(event.getDanshuang().getOdd());
				item.setHalf(false);
			}
			else if("ds_even".equals(oddType))
			{
				order.setCat("单双");
				item.setCat("单双");
				item.setBeton("双");
				item.setOdd(event.getDanshuang().getEven());
				item.setHalf(false);
			}
			//独赢
			else if("dy_win".equals(oddType))
			{
				order.setCat("独赢");
				item.setCat("独赢");
				item.setBeton("主");
				item.setOdd(event.getDuying().getWin());
				item.setHalf(false);
			}
			else if("dy_lose".equals(oddType))
			{
				order.setCat("独赢");
				item.setCat("独赢");
				item.setBeton("客");
				item.setOdd(event.getDuying().getLose());
				item.setHalf(false);
			}
			else if("dy_draw".equals(oddType))
			{
				order.setCat("独赢");
				item.setCat("独赢");
				item.setBeton("和");
				item.setOdd(event.getDuying().getDraw());
				item.setHalf(false);
			}
			else if("dy_half_win".equals(oddType))
			{
				order.setCat("独赢");
				item.setCat("独赢");
				item.setBeton("主");
				item.setOdd(event.getDuyingHalf().getWin());
				item.setHalf(true);
			}
			else if("dy_half_lose".equals(oddType))
			{
				order.setCat("独赢");
				item.setCat("独赢");
				item.setBeton("客");
				item.setOdd(event.getDuyingHalf().getLose());
				item.setHalf(true);
			}
			else if("dy_half_draw".equals(oddType))
			{
				order.setCat("独赢");
				item.setCat("独赢");
				item.setBeton("和");
				item.setOdd(event.getDuyingHalf().getDraw());
				item.setHalf(true);
			}
			//半全场
			else if("bqc_hh".equals(oddType))
			{
				order.setCat("半全场");
				item.setCat("半全场");
				item.setBeton("主/主");
				item.setOdd(event.getBanquanchang().getHh());
			}
			else if("bqc_hr".equals(oddType))
			{
				order.setCat("半全场");
				item.setCat("半全场");
				item.setBeton("主/客");
				item.setOdd(event.getBanquanchang().getHr());
			}
			else if("bqc_hd".equals(oddType))
			{
				order.setCat("半全场");
				item.setCat("半全场");
				item.setBeton("主/和");
				item.setOdd(event.getBanquanchang().getHd());
			}
			else if("bqc_rh".equals(oddType))
			{
				order.setCat("半全场");
				item.setCat("半全场");
				item.setBeton("客/主");
				item.setOdd(event.getBanquanchang().getRh());
			}
			else if("bqc_rr".equals(oddType))
			{
				order.setCat("半全场");
				item.setCat("半全场");
				item.setBeton("客/客");
				item.setOdd(event.getBanquanchang().getRr());
			}
			else if("bqc_rd".equals(oddType))
			{
				order.setCat("半全场");
				item.setCat("半全场");
				item.setBeton("客/和");
				item.setOdd(event.getBanquanchang().getRd());
			}
			else if("bqc_dh".equals(oddType))
			{
				order.setCat("半全场");
				item.setCat("半全场");
				item.setBeton("和/主");
				item.setOdd(event.getBanquanchang().getDh());
			}
			else if("bqc_dr".equals(oddType))
			{
				order.setCat("半全场");
				item.setCat("半全场");
				item.setBeton("和/客");
				item.setOdd(event.getBanquanchang().getDr());
			}
			else if("bqc_dd".equals(oddType))
			{
				order.setCat("半全场");
				item.setCat("半全场");
				item.setBeton("和/和");
				item.setOdd(event.getBanquanchang().getDd());
			}
			//入球数
			else if("rqs_01".equals(oddType))
			{
				order.setCat("入球数");
				item.setCat("入球数");
				item.setBeton("01");
				item.setOdd(event.getRuqiushu().getS01());
			}
			
			else if ("rqs_23".equals(oddType))
			{
				order.setCat("入球数");
				item.setCat("入球数");
				item.setBeton("23");
				item.setOdd(event.getRuqiushu().getS23());
			}

			else if("rqs_46".equals(oddType))
			{
				order.setCat("入球数");
				item.setCat("入球数");
				item.setBeton("46");
				item.setOdd(event.getRuqiushu().getS46());
			}

			else if("rqs_7".equals(oddType))
			{
				order.setCat("入球数");
				item.setCat("入球数");
				item.setBeton("7");
				item.setOdd(event.getRuqiushu().getSup7());
			}

			else if("bd_00".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("0:0");
				item.setOdd(event.getBodan().getS00());
			}

			else if("bd_01".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("0:1");
				item.setOdd(event.getBodan().getS01());
			}

			else if("bd_02".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("0:2");
				item.setOdd(event.getBodan().getS02());
			}

			else if("bd_03".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("0:3");
				item.setOdd(event.getBodan().getS03());
			}

			else if("bd_04".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("0:4");
				item.setOdd(event.getBodan().getS04());
			}

			else if("bd_10".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("1:0");
				item.setOdd(event.getBodan().getS10());
			}

			else if("bd_11".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("1:1");
				item.setOdd(event.getBodan().getS11());
			}

			else if("bd_12".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("1:2");
				item.setOdd(event.getBodan().getS12());
			}

			else if("bd_13".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("1:3");
				item.setOdd(event.getBodan().getS13());
			}

			else if("bd_14".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("1:4");
				item.setOdd(event.getBodan().getS14());
			}

			else if("bd_20".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("2:0");
				item.setOdd(event.getBodan().getS20());
			}

			else if("bd_21".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("2:1");
				item.setOdd(event.getBodan().getS21());
			}

			else if("bd_22".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("2:2");
				item.setOdd(event.getBodan().getS22());
			}

			else if("bd_23".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("2:3");
				item.setOdd(event.getBodan().getS23());
			}

			else if("bd_24".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("2:4");
				item.setOdd(event.getBodan().getS24());
			}

			else if("bd_30".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("3:0");
				item.setOdd(event.getBodan().getS30());
			}

			else if("bd_31".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("3:1");
				item.setOdd(event.getBodan().getS31());
			}

			else if("bd_32".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("3:2");
				item.setOdd(event.getBodan().getS32());
			}

			else if("bd_33".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("3:3");
				item.setOdd(event.getBodan().getS33());
			}

			else if("bd_34".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("3:4");
				item.setOdd(event.getBodan().getS34());
			}

			else if("bd_40".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("4:0");
				item.setOdd(event.getBodan().getS40());
			}

			else if("bd_41".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("4:1");
				item.setOdd(event.getBodan().getS41());
			}

			else if("bd_42".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("4:2");
				item.setOdd(event.getBodan().getS42());
			}

			else if("bd_43".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("4:3");
				item.setOdd(event.getBodan().getS43());
			}

			else if("bd_44".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("4:4");
				item.setOdd(event.getBodan().getS44());
			}

			else if("bd_xx".equals(oddType))
			{
				order.setCat("波胆");
				item.setCat("波胆");
				item.setBeton("x:x");
				item.setOdd(event.getBodan().getSxx());
			}
			else return null;
		}
		item.setCounter(oddType);
		return item;
	}

	public OrderDao getOrderDao()
	{
		return orderDao;
	}

	public void setOrderDao(OrderDao orderDao)
	{
		this.orderDao = orderDao;
	}

	public OddsDao getOddsDao()
	{
		return oddsDao;
	}

	public void setOddsDao(OddsDao oddsDao)
	{
		this.oddsDao = oddsDao;
	}

	public CounterDao getCounterDao() {
		return counterDao;
	}

	public void setCounterDao(CounterDao counterDao) {
		this.counterDao = counterDao;
	}

	public Order newOrder(String username, Boolean isDanshi)
	{
		Order order = new Order();
		order.setId(Util.uuid2());
		order.setIsDanshi(isDanshi);
		order.setAlive(true);
		order.setSettled(false);
		order.setUsername(username);
		order.setTime(new Date());
		List<Item> items = new ArrayList<Item>();
		order.setItems(items);
		return order;
	}

	public void settleByComp(String compid, String full, String half)
	{
		Comp comp = oddsDao.getComp(compid);
		comp.setFullResult(full);
		comp.setHalfResult(half);
		comp.setAlive(false);
		oddsDao.updateComp(comp);
		counterDao.updateItemByComp(compid);
		List<Order> orders = orderDao.getOrdersByComp(compid, 1, 1000);
		for(Order order : orders)settleOrder(order);
	}
	
	/**
	 * 处理一个注单， 如果注单所涉及的比赛还没有结果则不能处理。<br/>
	 * 计算出注单输赢的结果， 同时更新用户余额。将该注单设置为已经处理完成。
	 * @param order
	 */
	private void settleOrder(Order order)
	{
		if(!canSettle(order))return;
		Double result = Calculator.cal(order);
		User user = accountDao.getUser(order.getUsername());
		user.setBalance(user.getBalance()+result);
		accountDao.updateUser(user);
		order.setAlive(false);
		order.setSettled(true);
		order.setResult(result);
		orderDao.updateOrder(order);
	}

	private boolean canSettle(Order order)
	{
		for(Item item : order.getItems())
			if(item.getResultScore() == null)return false;
		return true;
	}

	public AccountDao getAccountDao()
	{
		return accountDao;
	}

	public void setAccountDao(AccountDao accountDao)
	{
		this.accountDao = accountDao;
	}

	public List<Order> getOrdersByEventAndOdd(String eventid, String oddtype, int page, int range)
	{
		return orderDao.getOrdersByEventAndOdd(eventid, oddtype, page, range);
	}

	public List<Order> getTodayOrders(int page, int range)
	{
		String yesterday = Util.yesterday();
		return orderDao.getTodayOrders(yesterday, page, range);
	}

	public List<Order> getTodayOrdersByUser(String username, int page, int range)
	{
		String yesterday = Util.yesterday();
		return orderDao.getTodayOrdersByUser(username, yesterday, page, range);
	}

	public List<Map> getSatistic()
	{
		return counterDao.getSatistic();
	}

	public List<Order> getUserAliveOrders(String username)
	{
		Map map = new HashMap();
		map.put("username", username);
		map.put("alive", true);
		return orderDao.getOrders(map, 1, 100);
	}

	public void deleteOrder(Order order)
	{
		User user = accountDao.getUser(order.getUsername());
		user.setBalance(user.getBalance() + order.getAmount());
		orderDao.deleteOrder(order);
	}
	
	
}